﻿var DateUtility =
{
    // Проверка формата даты на соответствие dd.MM.yyyy
    // Возвращает true/false
    ValidateDate: function (dateString) {
        if (dateString && dateString.length == 10) {
            var trimmedDateString = jQuery.trim(dateString);
            if (trimmedDateString.length != 10) {
                return false;
            }

            var arr = trimmedDateString.split('.');
            if (arr.length != 3 || arr[0].length != 2 || arr[1].length != 2 || arr[2].length != 4) {
                return false;
            }

            var testRegExp = /\D/gi;

            for (var i = 0; i < arr.length; i++) {
                if (testRegExp.test(arr[i])) {
                    return false;
                }
            }

            var year = parseInt(arr[2], 10);
            var month = parseInt(arr[1], 10) - 1;
            var day = parseInt(arr[0], 10);

            if (year < 1900 || year > 2099) {
                return false;
            }

            if (month < 0 || month > 11) {
                return false;
            }

            try {
                var parsedDate = new Date(year, month, day);
                if (!parsedDate) {
                    return false;
                }

                if (parsedDate.getMonth() != month) {
                    return false;
                }
            }
            catch (ex) {
                return false;
            }
        }
        else {
            return false;
        }

        return true;
    },
    //Преобразует объект даты в строку вида dd.MM.yyyy
    GetStringFromDate: function (date) {
        var res = '';
        if (date) {
            var dd = date.getDate();
            if (dd < 10) dd = '0' + dd;

            var mm = date.getMonth() + 1;
            if (mm < 10) mm = '0' + mm;

            var yyyy = date.getFullYear();

            res = dd + '.' + mm + '.' + yyyy;
        }
        return res;
    }
}

jQuery.extend(Date, DateUtility);

var StringUtility = {
    //Преобразует строку вида dd.MM.yyyy в объект даты. При ошибке возвращает null
    GetDateFromString: function (input) {
        if (Date.ValidateDate(input)) {
            var arr = input.split('.');
            return new Date(parseInt(arr[2], 10), parseInt(arr[1], 10) - 1, parseInt(arr[0], 10));
        }
        return null;
    }
}

jQuery.extend(String, StringUtility);

var NumberUtility = {
    ValidateInt: function (input) {
        var testRegExp = /\D/gi;

        if (testRegExp.test(input)) {
            return false;
        }

        return true;
    } /*,
    ValidateFloat: function (input)
    {
        try
        {
            parseFloat(input, 10);
        }
        catch (msg)
        {
            return false;
        }
        return true;
    }*/
}

jQuery.extend(Number, NumberUtility);